module utils {
	export class TimeUtils {
		/**
		 * 显示样式  yyyy/mm/dd
		 */
		public static DISPLAY_1: string = "yyyy/mn/dd";
		/**
		 * 显示样式  yyyy年mm月dd日
		 */
		public static DISPLAY_2: string = "yyyy年mn月dd日";
		/**
		 * 显示样式 yyyy-mm-dd hh:mm:ss
		 */
		public static DISPLAY_3: string = "yyyy-mn-dd hh:mm:ss";
		/**
		 * 显示样式mm:ss
		 */
		public static DISPLAY_mm_ss: string = "mm:ss";
		/**
		 * 显示样式mm:ss
		 */
		public static DISPLAY_mm_ss_CN: string = "mm分ss秒";
		/**
		 * 显示样式 mm/dd hh:mm
		 */
		public static DISPLAY_3_S: string = "mn-dd hh:mm";
		/**
		 * 显示样式 yyyy年mm月dd日 hh:mm:ss
		 */
		public static DISPLAY_4: string = "yyyy年mn月dd hh:mm:ss";
		/**
		 * 显示样式 yyyy年mm月dd日 hh:mm
		 */
		public static DISPLAY_5: string = "yyyy年mn月dd日 hh时";
		/**
		 * 显示样式 yyyy年mm月dd日 hh时mm分
		 */
		public static DISPLAY_6: string = "yyyy年mn月dd日 hh时mm分";

		/**
		 * 显示样式hh时mm分
		 */
		public static DISPLAY_8: string = "hh小时mm分";
		/**
		 * 显示样式hh时mm分
		 */
		public static DISPLAY_8_EN: string = "hh:mm";

		/**
		 * 显示样式 dd日 hh时mm分
		 */
		public static DISPLAY_9: string = "dd日 hh小时mm分";
		/**
		 * 显示样式 hh小时mm分ss秒
		 */
		public static DISPLAY_10: string = "hh小时mm分ss秒";
		/**
		 * 显示样式hh:mm:ss
		 */
		public static DISPLAY_7: string = "hh:mm:ss";
		/**
		 * 显示样式01月01日00点
		 */
		public static DISPLAY_11: string = "mn月dd日hh点";
		/**
		 * 显示样式2018.1.20 15:30
		 */
		public static DISPLAY_12: string = "yyyy.mn.dd hh:mm";
		/**
		 * 显示样式01月01日 00:00
		 */
		public static DISPLAY_14: string = "mn月dd日 hh:mm";
		/**
		 * 显示样式 dd天 hh时mm分
		 */
		public static DISPLAY_16: string = "dd天 hh:mm:ss";
		/**
		 * 显示样式01小时
		 */
		public static DISPLAY_15: string = "hh小时";
		/**
		 * 显示样式01月01日
		 */
		public static DISPLAY_17: string = "mn月dd日";
		/**
		 * 显示样式x天x时x分x秒
		 */
		public static DISPLAY_18: string = "dd天hh时mm分ss秒";
		/**
		 * 显示样式 x天x时
		 */
		public static DISPLAY_19: string = "dd天hh时";
		/**
		 * 显示样式 x/x x:x:x
		 */
		public static DISPLAY_20: string = "mn/dd hh:mm:ss";
		/**
		 * 年 
		 */
		public static YEAR: string = "yyyy";
		/**
		 * 月 
		 */
		public static MONTH: string = "mn";
		/**
		 * 日 
		 */
		public static DAY: string = "dd";
		/**
		 * 小时 
		 */
		public static HOUR: string = "hh";
		/**
		 * 分钟
		 */
		public static MIN: string = "mm";
		/**
		 * 秒
		 */
		public static SECOND: string = "ss";
		/**
		 * 毫秒
		 */
		public static M_SECOND: string = "ms";
		/**
        * 剩余秒数 来获取时间格式
        * @param time （单位：秒。剩余的秒数 ） 
        * @param format （hh:mm:ss )不写dd即没有开没有hh即没有小时
        * @return 
        */
		public static getTime(time: number, format: string = TimeUtils.DISPLAY_7): string {
			var showDay: Boolean = format.indexOf("dd") > -1;
			var showHour: Boolean = format.indexOf("hh") > -1;

			var dd: number = 0;

			if (showDay) {
				dd = time / (3600 * 24) >> 0;
				time = time % (3600 * 24);
			}

			var hh: number = 0;
			if (showHour) {
				hh = time / 3600 >> 0;
				time = time % 3600;
			}

			var mi: number = time / 60 >> 0;
			var ss: number = time % 60;

			var str: string = format;
			str = str.replace("dd", dd + "");
			str = str.replace("hh", this.numberToStr00Format(hh));
			str = str.replace("mm", this.numberToStr00Format(mi));
			str = str.replace("ss", this.numberToStr00Format(ss));

			return str;
		}

		private static numberToStr00Format(v: number): string {
			v = Math.floor(v);
			return (v < 10) ? ("0" + v) : ("" + v);
		}
		/**
		 *  根据毫秒数得到相对于1970年7月1日的时间显示字符串 
		 *  @param  {number} ms
		 * @param  {string=TimeUtils.DISPLAY_1} display
		 * @returns string
		 */
		public static getStrByMS(ms: number, display: string = TimeUtils.DISPLAY_3): string {
			var date: Date = new Date(ms);

			var monthStr: string = this.numberToStr00Format(date.getMonth() + 1);
			var dayStr: string = this.numberToStr00Format(date.getDate());
			var hourStr: string = this.numberToStr00Format(date.getHours());
			var minuteStr: string = this.numberToStr00Format(date.getMinutes());
			var secondStr: string = this.numberToStr00Format(date.getSeconds());
			var msecondStr: string = this.numberToStr00Format(date.getMilliseconds());

			var result: string = display.replace(TimeUtils.YEAR, date.getFullYear() + "");
			result = result.replace(TimeUtils.MONTH, monthStr);
			result = result.replace(TimeUtils.DAY, dayStr);
			result = result.replace(TimeUtils.HOUR, hourStr);
			result = result.replace(TimeUtils.MIN, minuteStr);
			result = result.replace(TimeUtils.SECOND, secondStr);
			result = result.replace(TimeUtils.M_SECOND, msecondStr + "");
			// console.log("时间："+result);
			return result;
		}
		/**
		 *  根据毫秒数得到相对于1970年7月1日的时间显示字符串 
		 *  @param  {number} ms
		 * @param  {string=TimeUtils.DISPLAY_1} display
		 * @returns string
		 */
		public static getStrByMS2(ms: number, display: string = TimeUtils.DISPLAY_3): string {
			var date: Date = new Date(ms);

			var monthStr: string = this.numberToStr00Format(date.getMonth() + 1);
			var dayStr: string = this.numberToStr00Format(date.getDate());
			var hourStr: string = this.numberToStr00Format(date.getHours() + 1);
			var minuteStr: string = this.numberToStr00Format(date.getMinutes());
			var secondStr: string = this.numberToStr00Format(date.getSeconds());
			var msecondStr: string = this.numberToStr00Format(date.getMilliseconds());

			var result: string = display.replace(TimeUtils.YEAR, date.getFullYear() + "");
			result = result.replace(TimeUtils.MONTH, monthStr);
			result = result.replace(TimeUtils.DAY, dayStr);
			result = result.replace(TimeUtils.HOUR, hourStr);
			result = result.replace(TimeUtils.MIN, minuteStr);
			result = result.replace(TimeUtils.SECOND, secondStr);
			result = result.replace(TimeUtils.M_SECOND, msecondStr + "");
			// console.log("时间："+result);
			return result;
		}
	}
}